SMA4 Binary e-Reader Card File: (2,112 bytes long, from addresses 0x000 to 0x83F)
(hex address: hex byte)

Header: (48 bytes long, from addresses 0x00 to 0x2F)
0x00: 0x00
0x01: 0x30
0x02: 0x01
0x03: 0x02
0x04: 0x00
0x05: 0x01
0x06: 0x08
0x07: 0x10
0x08: 0x00
0x09: 0x00
0x0A: 0x10
0x0B: 0x12

0x0C: 0xF0
card type: game data

0x0D: **
**: region (0x71 = US, 0x72 = Jap)

0x0E: 0x01
0x0F: 0x00

0x10 0x11: ** **
** **: 2-byte card identifier (from addresses 0x72 and 0x73) reversed and multiplied by 4

0x12: 0x10

0x13 0x14: ** **
** **: Global checksum 1 (use sma4_regcon for calculating)

0x15: 0x19
0x16: 0x00
0x17: 0x00
0x18: 0x00
0x19: 0x08
0x1A: 0x4E		//N
0x1B: 0x49		//I
0x1C: 0x4E		//N
0x1D: 0x54		//T
0x1E: 0x45		//E
0x1F: 0x4E		//N
0x20: 0x44		//D
0x21: 0x4F		//O
0x22: 0x00
0x23: 0x22
0x24: 0x00
0x25: 0x09

0x26: 0x22
number of cards: 1
card number: 1

0x27 0x28: ** **
** **: data length times 2 and in reverse order
(For level cards, the data length starts at address 0x72, and ends at the 0x00 terminating byte that follows the end of the .LCMP file)
(For power-up item/switch cards, the data length starts at address 0x72 and ends at the last item/effect byte)
(For power-up 1-up cards, the data length is from addresses 0x72 to 0x7D, which is 12 bytes long, or values 0x18 0x00 for these addresses)
(For demo cards, the data length starts at address 0x72, and ends at the 0xFF 0xFF terminating bytes that follow the end of the demo data)

0x29: 0x02

0x2A: 0x00
application type: GBA
individual card title mode: no
permission to save: no

0x2B: 0x00
0x2C: 0x00
0x2D: 0x00

0x2E: **
**: Header checksum (use sma4_regcon for calculating)

0x2F: **
**: Global checksum 2 (use sma4_regcon for calculating)

(The order of header byte addresses used when calculating the checksums: 0x0D 0x0C 0x11 0x10 0x26 0x27 0x28 0x29 0x2A 0x2B 0x2C 0x2D)

Title 1: (33 bytes long, from addresses 0x30 to 0x50)
0x30: 0x53		//S
0x31: 0x75		//u
0x32: 0x70		//p
0x33: 0x65		//e
0x34: 0x72		//r
0x35: 0x20		//' '
0x36: 0x4D		//M
0x37: 0x61		//a
0x38: 0x72		//r
0x39: 0x69		//i
0x3A: 0x6F		//o
0x3B: 0x20		//' '
0x3C: 0x41		//A
0x3D: 0x64		//d
0x3E: 0x76		//v
0x3F: 0x61		//a
0x40: 0x6E		//n
0x41: 0x63		//c
0x42: 0x65		//e
0x43: 0x20		//' '
0x44: 0x34		//4
0x45: 0x00
0x46: 0x00
0x47: 0x00
0x48: 0x00
0x49: 0x00
0x4A: 0x00
0x4B: 0x00
0x4C: 0x00
0x4D: 0x00
0x4E: 0x00
0x4F: 0x00
0x50: 0x00

Title 2: (33 bytes long, from addresses 0x51 to 0x71)
0x51: 0x53		//S
0x52: 0x75		//u
0x53: 0x70		//p
0x54: 0x65		//e
0x55: 0x72		//r
0x56: 0x20		//' '
0x57: 0x4D		//M
0x58: 0x61		//a
0x59: 0x72		//r
0x5A: 0x69		//i
0x5B: 0x6F		//o
0x5C: 0x20		//' '
0x5D: 0x41		//A
0x5E: 0x64		//d
0x5F: 0x76		//v
0x60: 0x61		//a
0x61: 0x6E		//n
0x62: 0x63		//c
0x63: 0x65		//e
0x64: 0x20		//' '
0x65: 0x34		//4
0x66: 0x00
0x67: 0x00
0x68: 0x00
0x69: 0x00
0x6A: 0x00
0x6B: 0x00
0x6C: 0x00
0x6D: 0x00
0x6E: 0x00
0x6F: 0x00
0x70: 0x00
0x71: 0x00

Card Identifier: (2 bytes long, from addresses 0x72 to 0x73)
0x72: **
**: set number (never 0x00)

0x73: **
**: set type (0x00 = 'A' for levels, 0x04 = 'C' for power-ups, 0x06 = 'D' for power-ups, 0x08 = 'E' for demos)


(The rest of the data is 1,996 bytes long, from addresses 0x74 to 0x83F, but depends upon which type of card it is)

---LEVEL CARDS---

0x74: 0xFF
0x75: 0xFF
0x76: 0xFF
0x77: 0xFF
0x78: 0xFF
0x79: 0x00

0x7A to 0x??: The .LCMP file (Compressed Level Data, 1,9990 bytes at most)
The first 4 bytes should contain the ascii "ASR0", which is the type of compression used on the level files.

0x??+1: 0x00
(Terminating byte denoting the end of the compressed level file)
LCMP files created using the sma4comp program do not append this byte to the end of the file...

0x??+2 to 0x83F: Junk bytes.
These are just the current address subtracted by 0x70, and mod 0x100 (their values range between 0x00 to 0xFF)
For example, the junk byte at address 0x83F is always 0xCF

---POWER-UP CARDS---

0x74: 0x00
0x75: 0x00
0x76: 0x00
0x77: 0x00
0x78: 0x00
0x79: 0x00

0x7A: **
**: Power-Up type (0x00 = Item, 0x01 = 1-Up, 0x02 = Blue Switch, 0x03 = Orange Switch, 0x04 = Blue Green Switch, 0x05 = Yellow Switch, 0x06 = Green Switch, 0x07 = Cyan Switch, 0x08 = Red Switch)

0x7B: **
**: Quantity of Items/1-Ups/Switch effects

0x7C: 0x00

0x7D: **
**: Availability of the Power-Up (0x00 = Can be used in SMB3 and World-e, 0x01 = Can only be used in SMB3, 0x02 = Can only be used in World-e)

0x7E to 0x??: Items/Switch effects (as specified by address 0x7B)

Valid Item indices:
0x01: Super Mushroom
0x02: Fire Flower
0x03: Super Leaf
0x04: Frog Suit
0x05: Tanooki Suit
0x06: Hammer Suit
0x07: Jugem's Cloud (Not used in cards)
0x08: P-Wing
0x09: Starman
0x0A: Anchor (Not used in cards)
0x0B: Hammer (Not used in cards)
0x0C: Warp Whistle (Not used in cards)
0x0D: Music Box (Not used in cards)
0x0E: Cape
0x0F: Boomerang

Valid Switch indices:
0x00: 1-Up Mushrooms replaced with 3-Up Moons
0x01: Timer & music slowed down for the first 50 seconds of a stage
0x02: Score increases are multiplied by 2
0x03: P-Meter gets cut in half from 6 to 3
0x04: Flying platforms save you from pitfalls twice (Unused)
0x05: Grass patches appear in select levels
0x06: Fireballs turn enemies into coins
0x07: Luigi's airborne gravity is cut in half
0x08: Collisions power down Mario/Luigi directly to the small form
0x09: Certain stage enemies are replaced with harder ones
0x0A: Bosses have twice the health amounts
0x0B: Variation to the slowed down timer (Unused)
0x0C: Enemy stomp score combos begin at 4,000 points (Unused)
0x0D: Random Item Box drops Items when hit (Unused)

0x??+1 to 0x83F: Junk bytes.
These are just the current address subtracted by 0x70, and mod 0x100 (their values range between 0x00 to 0xFF)
For example, the junk byte at address 0x83F is always 0xCF
(1-Up cards always have their junk bytes begin at address 0x7E)

---DEMO CARDS---

0x74: 0x00
0x75: 0x00
0x76: 0x00
0x77: 0x00
0x78: 0x00
0x79: 0x00

0x7A: **
**: Demo type (0x00 = Demo Play, 0x01 = Super Demo Play)

0x7B: **
**: Game type (0x01 = SMB3, 0x02 = World-e)

0x7C: **
**: SMB3 World (0x01 to 0x08) or World-e Set (0x01 = Star, 0x02 = Mushroom, 0x1F = Promo)

0x7D: **
**: Level Index (0x01 or higher)

0x7E to 0x??: Demo data (More research needs to be done here...)

0x??+1 0x??+2: 0xFF 0xFF
(Terminating bytes denoting the end of the demo data)

0x??+3 to 0x83F: Junk bytes.
These are just the current address subtracted by 0x70, and mod 0x100 (their values range between 0x00 to 0xFF)
For example, the junk byte at address 0x83F is always 0xCF